iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Modern Web

Backend Developer的學習Roadmap系列 第 24

Day 24 Microservices vs Monolithic architecture

  • 分享至 

  • xImage
  •  

今天我們要來介紹Monolithic與Microservices的差別,在這個很多東西都上雲的時代,我們也是要來了解一下Monolithic代表著甚麼?

Monolithic

是將所有功能和組件都整合到一個應用程式裡面,如果裡面有一個資料庫,那就會是全部組件都共用這個資料庫。這種設計的好處是初期開發相對簡單,部署起來也較為方便,因為只需要管理一個應用程式。但是,隨著應用程式不斷增大,維護和擴展會變得越來越困難。任何小的變動都可能影響整體的運作,開發團隊之間的合作也會變得很複雜。

優點

  • 開發初期簡單,適合快速上線。
  • 部署方便,只需要管理一個程式。
  • 測試較為簡單,因為所有功能在同一個程式裡面。
  • 容易追蹤問題,因為所有的日誌和功能集中在一起。

缺點

  • 隨著應用程式擴大,程式變得龐大且難以管理。
  • 每次小變動都需要重新部署整個程式。
  • 擴展性差,難以針對單一功能進行獨立擴展。
  • 團隊協作變得複雜,開發效率下降。

Microservices

是將應用程式拆分成多個小型、獨立的服務,每個服務負責特定功能,並能夠各自開發、部署和擴展。我們常聽到的K8S,就是屬於microservices的一環。
這種架構的優勢在於靈活性,讓開發團隊可以針對特定的服務進行調整或擴展,而不會影響整體系統。另外,Microservices還允許使用不同技術來解決不同的問題,例如我可以A功能使用kotlin開發,B功能使用typescript開發,這是可行的! 因為對部屬來說,它就是各自的應用程式,互相沒有關係。

但缺點是管理和合作變得更複雜,尤其是各服務間的通信、監控和故障排除等,例如A功能需要B功能的資料,如果這時候B功能因為升級版本壞掉了,A功能也會跟著壞掉,如果是Monolithic就不會有這問題,因為B功能壞掉你就不會升版了XD

優點

  • 各服務可以獨立開發、部署和擴展。
  • 每個服務可使用不同的技術。
  • 系統具有高彈性,單一服務出問題不會影響整體,(例如有ABC三功能,A功能壞掉至少可以用BC功能)。
  • 適合大型、複雜的應用程序。

缺點

  • 服務之間的通信和合作變得複雜。
  • 需要更多的基礎設施和監控工具來管理,(prometheus,grafana,ELK等)。
  • 服務之間的依賴可能導致連鎖問題。
  • 初期設置成本較高。

總結

使用Microservices或是Monolithic都各自有好處,當然上雲後我們適當的管理得到的優勢是很大的,現在有很多工具可以幫助我們偵錯,只要架好k8s等工具,我們就可以方便的得到Microservices的好處了,而Monolithic可以用在小型或中型應用,初期開發也可以用,來快速上線和驗證概念,開發和部署更為簡單。

reference

https://www.atlassian.com/microservices/microservices-architecture/microservices-vs-monolith


上一篇
Day 23 CAP Theorem
下一篇
Day 25 Mitigation Strategies - Throttling and Debouncing
系列文
Backend Developer的學習Roadmap30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言